<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>RVM : Running the RVM</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            RVM : Running the RVM
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on May 29, 2009 by <font color="#0050B2">pizlo</font>.
				    </div>

				    <p>Jikes<a href="http://docs.codehaus.org/display/RVM/Trademarks" title="Trademarks">™</a> RVM executes Java virtual machine byte code instructions from <tt>.class</tt> files.   It does <em>not</em> compile Java<a href="http://docs.codehaus.org/display/RVM/Trademarks" title="Trademarks">™</a> source code. Therefore, you must compile all Java source files into bytecode using your favorite Java compiler.</p>

<p>For example, to run class <tt>foo</tt> with source code in file <tt>foo.java</tt>:</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>% javac foo.java
% rvm foo
</pre>
</div></div>
<p>The general syntax is</p>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
<pre>rvm [rvm options...] class [args...]
</pre>
</div></div>
<p>You may choose from a myriad of options for the <tt>rvm</tt> command-line. Options fall into two categories: <em>standard</em> and <em>non-standard</em>.  Non-standard options are preceded by "<tt><b>&#45;X:</b></tt>".</p>

<h3><a name="RunningtheRVM-StandardCommandLineOptions"></a>Standard Command-Line Options</h3>

<p>We currently support a subset of the JDK 1.5 standard options. Below is a list of all options and their descriptions. Unless otherwise noted each option is supported in Jikes RVM.</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> {-cp or &#45;classpath} &lt;directories and zip/jar files separated by ":"&gt; </td>
<td class='confluenceTd'> set search path for application classes and resources </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;D&lt;name&gt;=&lt;value&gt; </td>
<td class='confluenceTd'> set a system property </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;verbose:[ class &#124; gc &#124; jni ] </td>
<td class='confluenceTd'> enable verbose output </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;version </td>
<td class='confluenceTd'> print current VM version and terminate the run </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;showversion </td>
<td class='confluenceTd'> print current VM version and continue running </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;fullversion </td>
<td class='confluenceTd'> like "-version", but with more information </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;? or &#45;help </td>
<td class='confluenceTd'> print help message </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X </td>
<td class='confluenceTd'> print help on non-standard options </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;jar </td>
<td class='confluenceTd'> execute a jar file </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;javaagent:&lt;jarpath&gt;[=&lt;options&gt;] </td>
<td class='confluenceTd'> load Java programming language agent, see java.lang.instrument </td>
</tr>
</tbody></table>
</div>


<h3><a name="RunningtheRVM-NonStandardCommandLineOptions"></a>Non-Standard Command-Line Options</h3>

<p>The non standard command-line options are grouped according to the subsystem that they control. The following sections list the available options in each group.</p>

<h4><a name="RunningtheRVM-CoreNonStandardCommandLineOptions"></a>Core Non-Standard Command-Line Options</h4>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:verbose </td>
<td class='confluenceTd'> Print out additional lowlevel information for GC and hardware trap handling </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:verboseBoot=&lt;number&gt; </td>
<td class='confluenceTd'> Print out additional information while VM is booting, using verbosity level &lt;number&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:sysLogfile=&lt;filename&gt; </td>
<td class='confluenceTd'> Write standard error message to &lt;filename&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:ic=&lt;filename&gt; </td>
<td class='confluenceTd'> Read boot image code from &lt;filename&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:id=&lt;filename&gt; </td>
<td class='confluenceTd'> Read boot image data from &lt;filename&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:ir=&lt;filename&gt; </td>
<td class='confluenceTd'> Read boot image ref map from &lt;filename&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:vmClasses=&lt;path&gt; </td>
<td class='confluenceTd'> Load the com.ibm.jikesrvm.&#42; and java.&#42; classes from &lt;path&gt; </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;X:processors=&lt;number&#124;"all"&gt; </td>
<td class='confluenceTd'> The number of processors that the garbage collector will use </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-MemoryNonStandardCommandLineOptions"></a>Memory Non-Standard Command-Line Options</h4>

<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> &#45;Xms&lt;number&gt;&lt;unit&gt; </td>
<td class='confluenceTd'> Initial size of heap where &lt;number&gt; is an integer, an extended-precision floating point or a hexadecimal value and &lt;unit&gt; is one of T (Terabytes), G (Gigabytes), M (Megabytes), pages (of size 4096), K (Kilobytes) or &lt;no unit&gt; for bytes </td>
</tr>
<tr>
<td class='confluenceTd'> &#45;Xmx&lt;number&gt;&lt;unit&gt; </td>
<td class='confluenceTd'> Maximum size of heap. See above for definition of &lt;number&gt; and &lt;unit&gt; </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-GarbageCollectorNonStandardCommandLineOptions"></a>Garbage Collector Non-Standard Command-Line Options</h4>

<p>These options are all prefixed by <tt>&#45;X:gc:</tt>.</p>

<p>Boolean options.</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> protectOnRelease </td>
<td class='confluenceTd'> Should memory be protected on release? </td>
</tr>
<tr>
<td class='confluenceTd'> echoOptions </td>
<td class='confluenceTd'> Echo when options are set? </td>
</tr>
<tr>
<td class='confluenceTd'> printPhaseStats </td>
<td class='confluenceTd'> When printing statistics, should statistics for each gc-mutator phase be printed? </td>
</tr>
<tr>
<td class='confluenceTd'> xmlStats </td>
<td class='confluenceTd'> Print end-of-run statistics in XML format </td>
</tr>
<tr>
<td class='confluenceTd'> eagerCompleteSweep </td>
<td class='confluenceTd'> Should we eagerly finish sweeping at the start of a collection </td>
</tr>
<tr>
<td class='confluenceTd'> fragmentationStats </td>
<td class='confluenceTd'> Should we print fragmentation statistics for the free list allocator? </td>
</tr>
<tr>
<td class='confluenceTd'> verboseFragmentationStats </td>
<td class='confluenceTd'> Should we print verbose fragmentation statistics for the free list allocator? </td>
</tr>
<tr>
<td class='confluenceTd'> verboseTiming </td>
<td class='confluenceTd'> Should we display detailed breakdown of where GC time is spent? </td>
</tr>
<tr>
<td class='confluenceTd'> noFinalizer </td>
<td class='confluenceTd'> Should finalization be disabled? </td>
</tr>
<tr>
<td class='confluenceTd'> noReferenceTypes </td>
<td class='confluenceTd'> Should reference type processing be disabled? </td>
</tr>
<tr>
<td class='confluenceTd'> fullHeapSystemGC </td>
<td class='confluenceTd'> Should a major GC be performed when a system GC is triggered? </td>
</tr>
<tr>
<td class='confluenceTd'> ignoreSystemGC </td>
<td class='confluenceTd'> Should we ignore calls to java.lang.System.gc? </td>
</tr>
<tr>
<td class='confluenceTd'> variableSizeHeap </td>
<td class='confluenceTd'> Should we shrink/grow the heap to adjust to application working set? </td>
</tr>
<tr>
<td class='confluenceTd'> eagerMmapSpaces </td>
<td class='confluenceTd'> If true, all spaces are eagerly demand zero mmapped at boot time </td>
</tr>
<tr>
<td class='confluenceTd'> sanityCheck </td>
<td class='confluenceTd'> Perform sanity checks before and after each collection? </td>
</tr>
</tbody></table>
</div>

<p>Value options.</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Type </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> markSweepMarkBits </td>
<td class='confluenceTd'> int </td>
<td class='confluenceTd'> Number of bits to use for the header cycle of mark sweep spaces </td>
</tr>
<tr>
<td class='confluenceTd'> verbose </td>
<td class='confluenceTd'> int </td>
<td class='confluenceTd'> GC verbosity level </td>
</tr>
<tr>
<td class='confluenceTd'> stressFactor </td>
<td class='confluenceTd'> bytes </td>
<td class='confluenceTd'> Force a collection after this much allocation </td>
</tr>
<tr>
<td class='confluenceTd'> metaDataLimit </td>
<td class='confluenceTd'> bytes </td>
<td class='confluenceTd'> Trigger a GC if the meta data volume grows to this limit </td>
</tr>
<tr>
<td class='confluenceTd'> boundedNursery </td>
<td class='confluenceTd'> bytes </td>
<td class='confluenceTd'> Bound the maximum size of the nursery to this value </td>
</tr>
<tr>
<td class='confluenceTd'> fixedNursery </td>
<td class='confluenceTd'> bytes </td>
<td class='confluenceTd'> Fix the minimum and maximum size of the nursery to this value </td>
</tr>
<tr>
<td class='confluenceTd'> debugAddress </td>
<td class='confluenceTd'> address </td>
<td class='confluenceTd'> Specify an address at runtime for use in debugging </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-BaseCompilerNonStandardCommandLineOptions"></a>Base Compiler Non-Standard Command-Line Options</h4>

<p>Boolean options</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> edge_counters </td>
<td class='confluenceTd'> Insert edge counters on all bytecode-level conditional branches </td>
</tr>
<tr>
<td class='confluenceTd'> invocation_counters </td>
<td class='confluenceTd'> Select methods for optimized recompilation by using invocation counters </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-OptCompilerNonStandardCommandLineOptions"></a>Opt Compiler Non-Standard Command-Line Options</h4>

<p>Boolean options.</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> local_constant_prop </td>
<td class='confluenceTd'> Perform local constant propagation </td>
</tr>
<tr>
<td class='confluenceTd'> local_copy_prop </td>
<td class='confluenceTd'> Perform local copy propagation </td>
</tr>
<tr>
<td class='confluenceTd'> local_cse </td>
<td class='confluenceTd'> Perform local common subexpression elimination </td>
</tr>
<tr>
<td class='confluenceTd'> global_bounds </td>
<td class='confluenceTd'> Perform global Array Bound Check elimination on Demand </td>
</tr>
<tr>
<td class='confluenceTd'> monitor_removal </td>
<td class='confluenceTd'> Try to remove unnecessary monitor operations </td>
</tr>
<tr>
<td class='confluenceTd'> invokee_thread_local </td>
<td class='confluenceTd'> Compile the method assuming the invokee is thread-local </td>
</tr>
<tr>
<td class='confluenceTd'> no_callee_exceptions </td>
<td class='confluenceTd'> Assert that any callee of this compiled method will not throw exceptions? </td>
</tr>
<tr>
<td class='confluenceTd'> simple_escape_ipa </td>
<td class='confluenceTd'> Eagerly compute method summaries for simple escape analysis </td>
</tr>
<tr>
<td class='confluenceTd'> field_analysis </td>
<td class='confluenceTd'> Eagerly compute method summaries for flow-insensitive field analysis </td>
</tr>
<tr>
<td class='confluenceTd'> scalar_replace_aggregates </td>
<td class='confluenceTd'> Perform scalar replacement of aggregates </td>
</tr>
<tr>
<td class='confluenceTd'> reorder_code </td>
<td class='confluenceTd'> Reorder basic blocks for improved locality and branch prediction </td>
</tr>
<tr>
<td class='confluenceTd'> reorder_code_ph </td>
<td class='confluenceTd'> Reorder basic blocks using Pettis and Hansen Algo2 </td>
</tr>
<tr>
<td class='confluenceTd'> inline_new </td>
<td class='confluenceTd'> Inline allocation of scalars and arrays </td>
</tr>
<tr>
<td class='confluenceTd'> inline_write_barrier </td>
<td class='confluenceTd'> Inline write barriers for generational collectors </td>
</tr>
<tr>
<td class='confluenceTd'> inline </td>
<td class='confluenceTd'> Inline statically resolvable calls </td>
</tr>
<tr>
<td class='confluenceTd'> guarded_inline </td>
<td class='confluenceTd'> Guarded inlining of non-final virtual calls </td>
</tr>
<tr>
<td class='confluenceTd'> guarded_inline_interface </td>
<td class='confluenceTd'> Speculatively inline non-final interface calls </td>
</tr>
<tr>
<td class='confluenceTd'> static_splitting </td>
<td class='confluenceTd'> CFG splitting to create hot traces based on static heuristics </td>
</tr>
<tr>
<td class='confluenceTd'> redundant_branch_elimination </td>
<td class='confluenceTd'> Eliminate redundant conditional branches </td>
</tr>
<tr>
<td class='confluenceTd'> preex_inline </td>
<td class='confluenceTd'> Pre-existence based inlining </td>
</tr>
<tr>
<td class='confluenceTd'> ssa </td>
<td class='confluenceTd'> Should SSA form be constructed on the HIR? </td>
</tr>
<tr>
<td class='confluenceTd'> load_elimination </td>
<td class='confluenceTd'> Should we perform redundant load elimination during SSA pass? </td>
</tr>
<tr>
<td class='confluenceTd'> coalesce_after_ssa </td>
<td class='confluenceTd'> Should we coalesce move instructions after leaving SSA? </td>
</tr>
<tr>
<td class='confluenceTd'> expression_folding </td>
<td class='confluenceTd'> Should we try to fold expressions with constants in SSA form? </td>
</tr>
<tr>
<td class='confluenceTd'> live_range_splitting </td>
<td class='confluenceTd'> Split live ranges using LIR SSA pass? </td>
</tr>
<tr>
<td class='confluenceTd'> gcp </td>
<td class='confluenceTd'> Perform global code placement </td>
</tr>
<tr>
<td class='confluenceTd'> gcse </td>
<td class='confluenceTd'> Perform global code placement </td>
</tr>
<tr>
<td class='confluenceTd'> verbose_gcp </td>
<td class='confluenceTd'> Perform noisy global code placement </td>
</tr>
<tr>
<td class='confluenceTd'> licm_ignore_pei </td>
<td class='confluenceTd'> Assume PEIs do not throw or state is not observable </td>
</tr>
<tr>
<td class='confluenceTd'> unwhile </td>
<td class='confluenceTd'> Turn whiles into untils </td>
</tr>
<tr>
<td class='confluenceTd'> loop_versioning </td>
<td class='confluenceTd'> Loop versioning </td>
</tr>
<tr>
<td class='confluenceTd'> handler_liveness </td>
<td class='confluenceTd'> Store liveness for handlers to improve dependence graph at PEIs </td>
</tr>
<tr>
<td class='confluenceTd'> schedule_prepass </td>
<td class='confluenceTd'> Perform prepass instruction scheduling </td>
</tr>
<tr>
<td class='confluenceTd'> no_checkcast </td>
<td class='confluenceTd'> Should all checkcast operations be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_checkstore </td>
<td class='confluenceTd'> Should all checkstore operations be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_bounds_check </td>
<td class='confluenceTd'> Should all bounds check operations be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_null_check </td>
<td class='confluenceTd'> Should all null check operations be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_synchro </td>
<td class='confluenceTd'> Should all synchronization operations be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_threads </td>
<td class='confluenceTd'> Should all yield points be (unsafely) eliminated? </td>
</tr>
<tr>
<td class='confluenceTd'> no_cache_flush </td>
<td class='confluenceTd'> Should cache flush instructions (PowerPC SYNC/ISYNC) be omitted? NOTE: Cannot be correctly changed via the command line&#33; </td>
</tr>
<tr>
<td class='confluenceTd'> reads_kill </td>
<td class='confluenceTd'> Should we constrain optimizations by enforcing reads-kill? </td>
</tr>
<tr>
<td class='confluenceTd'> monitor_nop </td>
<td class='confluenceTd'> Should we treat all monitorenter/monitorexit bytecodes as nops? </td>
</tr>
<tr>
<td class='confluenceTd'> static_stats </td>
<td class='confluenceTd'> Should we dump out compile-time statistics for basic blocks? </td>
</tr>
<tr>
<td class='confluenceTd'> code_patch_nop </td>
<td class='confluenceTd'> Should all patch point be (unsafely) eliminated (at initial HIR)? </td>
</tr>
<tr>
<td class='confluenceTd'> instrumentation_sampling </td>
<td class='confluenceTd'> Perform code transformation to sample instrumentation code. </td>
</tr>
<tr>
<td class='confluenceTd'> no_duplication </td>
<td class='confluenceTd'> When performing inst. sampling, should it be done without duplicating code? </td>
</tr>
<tr>
<td class='confluenceTd'> processor_specific_counter </td>
<td class='confluenceTd'> Should there be one CBS counter per processor for SMP performance? </td>
</tr>
<tr>
<td class='confluenceTd'> remove_yp_from_checking </td>
<td class='confluenceTd'> Should yieldpoints be removed from the checking code (requires finite sample interval). </td>
</tr>
</tbody></table>
</div>

<p>Value options.</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> ic_max_target_size </td>
<td class='confluenceTd'> Static inlining heuristic: Upper bound on callee size </td>
</tr>
<tr>
<td class='confluenceTd'> ic_max_inline_depth </td>
<td class='confluenceTd'> Static inlining heuristic: Upper bound on depth of inlining </td>
</tr>
<tr>
<td class='confluenceTd'> ic_max_always_inline_target_size </td>
<td class='confluenceTd'> Static inlining heuristic: Always inline callees of this size or smaller </td>
</tr>
<tr>
<td class='confluenceTd'> ic_massive_method_size </td>
<td class='confluenceTd'> Static inlining heuristic: If root method is already this big, then only inline trivial methods </td>
</tr>
<tr>
<td class='confluenceTd'> ai_max_target_size </td>
<td class='confluenceTd'> Adaptive inlining heuristic: Upper bound on callee size </td>
</tr>
<tr>
<td class='confluenceTd'> ai_min_callsite_fraction </td>
<td class='confluenceTd'> Adaptive inlining heuristc: Minimum fraction of callsite distribution for guarded inlining of a callee </td>
</tr>
<tr>
<td class='confluenceTd'> edge_count_input_file </td>
<td class='confluenceTd'> Input file of edge counter profile data </td>
</tr>
<tr>
<td class='confluenceTd'> inlining_guard </td>
<td class='confluenceTd'> Selection of guard mechanism for inlined virtual calls that cannot be statically bound </td>
</tr>
<tr>
<td class='confluenceTd'> fp_mode </td>
<td class='confluenceTd'> Selection of strictness level for floating point computations </td>
</tr>
<tr>
<td class='confluenceTd'> exclude </td>
<td class='confluenceTd'> Exclude methods from being opt compiled </td>
</tr>
<tr>
<td class='confluenceTd'> unroll_log <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Unroll loops. Duplicates the loop body 2^n times. </td>
</tr>
<tr>
<td class='confluenceTd'> cond_move_cutoff </td>
<td class='confluenceTd'> How many extra instructions will we insert in order to remove a conditional branch? </td>
</tr>
<tr>
<td class='confluenceTd'> load_elimination_rounds </td>
<td class='confluenceTd'> How many rounds of redundant load elimination will we attempt? </td>
</tr>
<tr>
<td class='confluenceTd'> alloc_advice_sites </td>
<td class='confluenceTd'> Read allocation advice attributes for all classes from this file </td>
</tr>
<tr>
<td class='confluenceTd'> frequency_strategy </td>
<td class='confluenceTd'> How to compute block and edge frequencies? </td>
</tr>
<tr>
<td class='confluenceTd'> spill_cost_estimate </td>
<td class='confluenceTd'> Selection of spilling heuristic </td>
</tr>
<tr>
<td class='confluenceTd'> infrequent_threshold </td>
<td class='confluenceTd'> Cumulative threshold which defines the set of infrequent basic blocks <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> cbs_hotness </td>
<td class='confluenceTd'> Threshold at which a conditional branch is considered to be skewed </td>
</tr>
<tr>
<td class='confluenceTd'> ir_print_level <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Only print IR compiled above this level </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-AdaptiveSystemNonStandardCommandLineOptions"></a>Adaptive System Non-Standard Command-Line Options</h4>

<p>Boolean options</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> enable_recompilation&nbsp; <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Should the adaptive system recompile hot methods? </td>
</tr>
<tr>
<td class='confluenceTd'> enable_advice_generation </td>
<td class='confluenceTd'> Do we need to generate advice file? </td>
</tr>
<tr>
<td class='confluenceTd'> enable_precompile </td>
<td class='confluenceTd'> Should the adaptive system precompile all methods given in the advice file before the user thread is started? </td>
</tr>
<tr>
<td class='confluenceTd'> enable_replay_compile </td>
<td class='confluenceTd'> Should the adaptive system use the pseudo-adaptive system that solely relies on the advice file? </td>
</tr>
<tr>
<td class='confluenceTd'> gather_profile_data </td>
<td class='confluenceTd'> Should profile data be gathered and reported at the end of the run? </td>
</tr>
<tr>
<td class='confluenceTd'> adaptive_inlining </td>
<td class='confluenceTd'> Should we use adaptive feedback-directed inlining? </td>
</tr>
<tr>
<td class='confluenceTd'> early_exit </td>
<td class='confluenceTd'> Should AOS exit when the controller clock reaches early_exit_value? </td>
</tr>
<tr>
<td class='confluenceTd'> osr_promotion </td>
<td class='confluenceTd'> Should AOS promote baseline-compiled methods to opt? </td>
</tr>
<tr>
<td class='confluenceTd'> background_recompilation </td>
<td class='confluenceTd'> Should recompilation be done on a background thread or on next invocation? </td>
</tr>
<tr>
<td class='confluenceTd'> insert_yieldpoint_counters </td>
<td class='confluenceTd'> Insert instrumentation in opt recompiled code to count yieldpoints executed? </td>
</tr>
<tr>
<td class='confluenceTd'> insert_method_counters_opt </td>
<td class='confluenceTd'> Insert intrusive method counters in opt recompiled code? </td>
</tr>
<tr>
<td class='confluenceTd'> insert_instruction_counters </td>
<td class='confluenceTd'> Insert counters on all instructions in opt recompiled code? </td>
</tr>
<tr>
<td class='confluenceTd'> insert_debugging_counters </td>
<td class='confluenceTd'> Enable easy insertion of (debugging) counters in opt recompiled code. </td>
</tr>
<tr>
<td class='confluenceTd'> report_interrupt_stats <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Report stats related to timer interrupts and AOS listeners on exit. </td>
</tr>
<tr>
<td class='confluenceTd'> disable_recompile_all_methods <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Disable the ability for an app to request all methods to be recompiled. </td>
</tr>
</tbody></table>
</div>

<p>Value options</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> method_sample_size <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> How many timer ticks of method samples to take before reporting method hotness to controller. </td>
</tr>
<tr>
<td class='confluenceTd'> initial_compiler <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Selection of initial compiler. </td>
</tr>
<tr>
<td class='confluenceTd'> recompilation_strategy </td>
<td class='confluenceTd'> Selection of mechanism for identifying methods for optimizing recompilation. </td>
</tr>
<tr>
<td class='confluenceTd'> method_listener_trigger </td>
<td class='confluenceTd'> What triggers us to take a method sample? <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> call_graph_listener_trigger </td>
<td class='confluenceTd'> What triggers us to take a method sample? </td>
</tr>
<tr>
<td class='confluenceTd'> logfile_name&nbsp; <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Name of log file. </td>
</tr>
<tr>
<td class='confluenceTd'> compilation_advice_file_output <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Name of advice file. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> dynamic_call_file_output </td>
<td class='confluenceTd'> Name of dynamic call graph file. </td>
</tr>
<tr>
<td class='confluenceTd'> compiler_dna_file </td>
<td class='confluenceTd'> Name of compiler DNA file (no name ==&gt; use default DNA).&nbsp; Discussed in a comment at the head of VM_CompilerDNA.java. </td>
</tr>
<tr>
<td class='confluenceTd'> compiler_advice_file_input </td>
<td class='confluenceTd'> File containing information about the methods to Opt compile. </td>
</tr>
<tr>
<td class='confluenceTd'> dynamic_call_file_input </td>
<td class='confluenceTd'> File containing information about the hot call sites. </td>
</tr>
<tr>
<td class='confluenceTd'> logging_level </td>
<td class='confluenceTd'> Control amount of event logging (larger ==&gt; more). </td>
</tr>
<tr>
<td class='confluenceTd'> final_report_level </td>
<td class='confluenceTd'> Control amount of info reported on exit (larger ==&gt; more). </td>
</tr>
<tr>
<td class='confluenceTd'> decay_frequency </td>
<td class='confluenceTd'> After how many clock ticks should we decay. </td>
</tr>
<tr>
<td class='confluenceTd'> dcg_decay_rate </td>
<td class='confluenceTd'> What factor should we decay call graph edges hotness by. </td>
</tr>
<tr>
<td class='confluenceTd'> dcg_sample_size </td>
<td class='confluenceTd'> After how many timer interrupts do we update the weights in the dynamic call graph? </td>
</tr>
<tr>
<td class='confluenceTd'> ai_seed_multiplier <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Initial edge weight of call graph is set to ai_seed_multiplier * (1/ai_control_point). </td>
</tr>
<tr>
<td class='confluenceTd'> offline_inline_plan_name </td>
<td class='confluenceTd'> Name of offline inline plan to be read and used for inlining. </td>
</tr>
<tr>
<td class='confluenceTd'> early_exit_time </td>
<td class='confluenceTd'> Value of controller clock at which AOS should exit if early_exit is true. </td>
</tr>
<tr>
<td class='confluenceTd'> invocation_count_threshold </td>
<td class='confluenceTd'> Invocation count at which a baseline compiled method should be recompiled. </td>
</tr>
<tr>
<td class='confluenceTd'> invocation_count_opt_level </td>
<td class='confluenceTd'> Opt level for recompilation in invocation count based system. </td>
</tr>
<tr>
<td class='confluenceTd'> counter_based_sample_interval </td>
<td class='confluenceTd'> What is the sample interval for counter-based sampling. </td>
</tr>
<tr>
<td class='confluenceTd'> ai_hot_callsite_threshold <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> What percentage of the total weight of the dcg demarcates warm/hot edges. </td>
</tr>
<tr>
<td class='confluenceTd'> max_opt_level </td>
<td class='confluenceTd'> The maximum optimization level to enable. <br class="atl-forced-newline" /> </td>
</tr>
</tbody></table>
</div>


<h4><a name="RunningtheRVM-VirtualMachineNonStandardCommandLineOptions"></a>Virtual Machine Non-Standard Command-Line Options</h4>

<p>Boolean Options</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description <br class="atl-forced-newline" /> </th>
</tr>
<tr>
<td class='confluenceTd'> measureCompilation<br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Time all compilations and report on exit. </td>
</tr>
<tr>
<td class='confluenceTd'> measureCompilationPhases <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Time all compilation sub-phases and report on exit. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> stackTraceFull <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Stack traces to consist of VM and application frames. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> stackTraceAtExit </td>
<td class='confluenceTd'> Dump a stack trace (via VM.syswrite) upon exit. </td>
</tr>
<tr>
<td class='confluenceTd'> verboseTraceClassLoading </td>
<td class='confluenceTd'> More detailed tracing then &#45;verbose:class. </td>
</tr>
<tr>
<td class='confluenceTd'> errorsFatal </td>
<td class='confluenceTd'> Exit when non-fatal errors are detected; used for regression testing. </td>
</tr>
</tbody></table>
</div>

<p>&nbsp;Value options</p>
<div class='table-wrap'>
<table class='confluenceTable'><tbody>
<tr>
<th class='confluenceTh'> Option </th>
<th class='confluenceTh'> Description </th>
</tr>
<tr>
<td class='confluenceTd'> maxSystemTroubleRecursionDepth<br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> If we get deeper than this in one of the System Trouble functions, try to die. </td>
</tr>
<tr>
<td class='confluenceTd'> interruptQuantum </td>
<td class='confluenceTd'> Timer interrupt scheduling quantum in ms. </td>
</tr>
<tr>
<td class='confluenceTd'> schedulingMultiplier <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Scheduling quantum = interruptQuantum * schedulingMultiplier. </td>
</tr>
<tr>
<td class='confluenceTd'> traceThreadScheduling <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Trace actions taken by thread scheduling. </td>
</tr>
<tr>
<td class='confluenceTd'> verboseStackTracePeriod </td>
<td class='confluenceTd'> Trace every nth time a stack trace is created.<br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> edgeCounterFile <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Input file of edge counter profile data. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> CBSCallSamplesPerTick <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> How many CBS call samples (Prologue/Epilogue) should we take per time tick. </td>
</tr>
<tr>
<td class='confluenceTd'> CBSCallSampleStride </td>
<td class='confluenceTd'> Stride between each CBS call sample (Prologue/Epilogue) within a sampling window. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> CBSMethodSamplesPerTick </td>
<td class='confluenceTd'> How many CBS method samples (any yieldpoint) should we take per time tick. <br class="atl-forced-newline" /> </td>
</tr>
<tr>
<td class='confluenceTd'> CBSMethodSampleStride <br class="atl-forced-newline" /> </td>
<td class='confluenceTd'> Stride between each CBS method sample (any yieldpoint) within a sampling window. </td>
</tr>
<tr>
<td class='confluenceTd'> countThreadTransitions </td>
<td class='confluenceTd'> Count, and report, the number of thread state transitions.  This works better on IA32 than on PPC at the moment. </td>
</tr>
<tr>
<td class='confluenceTd'> forceOneCPU </td>
<td class='confluenceTd'> Force all threads to run on one CPU.  The argument specifies which CPU (starting from 0). </td>
</tr>
</tbody></table>
</div>

<p><br class="atl-forced-newline" /></p>

<h2><a name="RunningtheRVM-RunningJikesRVMwithvalgrind"></a>Running Jikes RVM with valgrind</h2>

<p>&nbsp;Jikes RVM can run under valgrind, as of SVN revision 6791 (29-Aug-2007).&nbsp; Applying a patch of this revision to release 3.2.1 should also produce a working system.&nbsp; Versions of valgrind CVS prior to release 3.0 are also known to have worked.</p>

<p>To run a Jikes RVM build with valgrind, use the <tt>&#45;wrap</tt> flag to invoke valgrind, eg</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
rvm -wrap <span class="code-quote">"path/to/valgrind --smc-check=all &lt;valgrind-options&gt;"</span> &lt;jikesrvm-options&gt; ...
</pre>
</div></div>
<p>this will insert the invocation of valgrind at the appropriate place for it to operate on Jikes RVM proper rather than a wrapper script.&nbsp;</p>

<p>Under some circumstances, valgrind will load shared object libraries or allocate memory in areas of the heap that conflict with Jikes RVM.&nbsp; Using the flag &#45;X:gc:eagerMmapSpaces=true will prevent and/or detect this.&nbsp; If this flag reveals errors while mapping the spaces, you will need to rearrange the heap to avoid the addresses that valgrind is occupying.</p>

				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="http://docs.codehaus.org/images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Jul 04, 2010 19:57</font></td>
		    </tr>
	    </table>
    </body>
</html>